// 定义链表
class ListNode {
  constructor(val, next) {
    this.val = val;
    this.next = next;
  }
}

// 反转链表(双指针法)
function reverseList(head) {
  if (!head || !head.next) {
    return head;
  }
  // tmp临时指针:指向cur的下一个结点;pre上一个结点;当前结点
  let tmp = null, pre = null, cur = head;
  while (cur) {
    // 把cur的下一个结点保存到临时的结点里
    tmp = cur.next;
    // 改变cur的指向到pre结点
    cur.next = pre;
    // 移动pre到cur,cur到临时保存的结点里.
    pre = cur;
    cur = tmp;
  }
  return pre;
}